<!DOCTYPE html>
<html>
<!--
Copyright 2010 The Closure Library Authors. All Rights Reserved.

Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
  <title>goog.fx.DragListGroup</title>
  <meta charset="utf-8">
  <script src="../base.js"></script>
  <script>
    goog.require('goog.dom');
    goog.require('goog.fx.DragListDirection');
    goog.require('goog.fx.DragListGroup');
  </script>
  <link rel="stylesheet" href="css/demo.css">
  <style>
    body {
      font-family: verdana, sans-serif;
    }

    .hr_clear {
      float: none;
      clear: both;
      height: 0px;
      padding: 10px 0px 0px 0px;
      border: 0px;
      margin: 0px;
      visibility: hidden;
    }

    .bug {
      color: red;
      font-style: italic;
    }

    .horiz1_class,
    .horiz3_class,
    .horiz5_class {
      padding: 8px 12px;
      /* box_height + 2 * (padding + border + margin) =
         50 + 2 * (5 + 2 + 4) = 72px */
      height: 72px;
      border: 2px solid #000000;
    }
    .horiz1_class { float: left; }
    .horiz3_class { float: left; }
    .horiz5_class { float: left; }

    .horiz1_class div { float: left; }
    .horiz3_class div { float: right; }
    .horiz5_class div { float: left; }

    .horiz5_class {
      width: 288px;
      height: 216px;
    }

    .vert_table td {
      vertical-align: top;
      padding: 0px 20px;
    }

    .vert1_class,
    .vert2_class {
      padding: 12px 8px;
      /* box_width + 2 * (padding + border + margin) =
         50 + 2 * (5 + 2 + 2) = 68px */
      width: 68px;
      border: 2px solid #000000;
    }

    div.red_box,
    div.yellow_box,
    div.blue_box,
    div.purple_box {
      width: 50px;
      height: 50px;
      padding: 5px;
      margin: 4px 2px;
      font-family: verdana, sans-serif;
      font-size: 36px;
      font-weight: bold;
      text-align: center;
    }
    div.red_box {
      border: 2px solid #CC0000;
      color: #CC0000;
    }
    div.yellow_box {
      border: 2px solid #CCCC00;
      color: #CCCC00;
    }
    div.blue_box {
      border: 2px solid #0000CC;
      color: #0000CC;
    }
    div.purple_box {
      border: 2px solid #993399;
      color: #993399;
    }

    #test {
      background-color: #CCFFCC;
      width: 100px;
      height: 100px;
      padding: 13px;
      border: 11px solid #339933;
      margin: 15px;
    }

    /* The following styles are used in the JS. */

    .cursor_pointer {
      cursor: pointer;
    }

    .cursor_move {
      cursor: move;
      -moz-user-select: none;
    }

    .opacity_40 {
      opacity: 0.4;
      -moz-opacity: 0.4;
      filter: alpha(opacity=40);
    }

    .drag_hover_class {
      border-color: #009900;
      background-color: #CCFFCC;
    }
  </style>
</head>
<body>

  <h1>goog.fx.DragListGroup</h1>
  <h2>You can drag any squares into any of the first 4 lists.</h2>
  <hr class="hr_clear">

  <h4>Horizontal list 1 (grows right):</h4>
  <div id="horiz1_div" class="horiz1_class">
    <div class="red_box">1</div>
    <div class="red_box">2</div>
    <div class="red_box">3</div>
    <div class="red_box">4</div>
  </div>
  <hr class="hr_clear">

  <table class="vert_table">
  <tr>

  <td>
  <h4>Vertical list 1:</h4>
  <div id="vert1_div" class="vert1_class">
    <div class="blue_box">1</div>
    <div class="blue_box">2</div>
    <div class="blue_box">3</div>
    <div class="blue_box">4</div>
  </div>
  </td>

  <td>
  <h4>Vertical list 2 (style changes on drag hover):</h4>
  <div id="vert2_div" class="vert2_class">
    <div class="purple_box">1</div>
    <div class="purple_box">2</div>
    <div class="purple_box">3</div>
    <div class="purple_box">4</div>
  </div>
  </td>

  </tr>
  </table>
  <hr class="hr_clear">
  <h4>Horizontal list 3 (grows left):</h4>
  <p class="bug">Bug: drop position is off by one.</p>
  <div id="horiz3_div" class="horiz3_class">
    <div class="yellow_box">1</div>
    <div class="yellow_box">2</div>
    <div class="yellow_box">3</div>
    <div class="yellow_box">4</div>
  </div>
  <hr class="hr_clear">

  <h4>Horizontal list 5 (grows right, has multiple rows, hysteresis is enabled):</h4>
  <p class="bug">Bug: can't drop into the last row.</p>
  <div id="horiz5_div" class="horiz5_class">
    <div class="blue_box">11</div>
    <div class="blue_box">22</div>
    <div class="blue_box">33</div>
    <div class="blue_box">44</div>
    <div class="blue_box">55</div>
    <div class="blue_box">66</div>
    <div class="blue_box">77</div>
    <div class="blue_box">88</div>
    <div class="blue_box">99</div>
  </div>
  <hr class="hr_clear">

  <h4>The items in this list can be moved around with shift-dragging:</h4>
  <div id="horiz6_div" class="horiz1_class">
    <div class="red_box">1</div>
    <div class="red_box">2</div>
    <div class="red_box">3</div>
    <div class="red_box">4</div>
  </div>
  <hr class="hr_clear">

  <h4>The items have different width:</h4>
  <p class="bug">
    Bug: the drop positions are off.
    For example try moving box 1 a bit to the left.
  </p>
  <div id="horiz7_div" class="horiz1_class">
    <div class="red_box" style="width: 200px">1</div>
    <div class="red_box">2</div>
    <div class="red_box" style="width: 200px">3</div>
    <div class="red_box">4</div>
  </div>
  <hr class="hr_clear">
  <script>

  var dlg = new goog.fx.DragListGroup();
  dlg.setDragItemHoverClass('cursor_move');
  dlg.setDraggerElClass('cursor_move opacity_40');

  dlg.addDragList(goog.dom.getElement('horiz1_div'),
      goog.fx.DragListDirection.RIGHT);
  dlg.addDragList(goog.dom.getElement('horiz3_div'),
      goog.fx.DragListDirection.LEFT);
  dlg.addDragList(goog.dom.getElement('vert1_div'),
      goog.fx.DragListDirection.DOWN);
  dlg.addDragList(goog.dom.getElement('vert2_div'),
      goog.fx.DragListDirection.DOWN, true, 'drag_hover_class');

  dlg.init();

  var dlg2 = new goog.fx.DragListGroup();
  dlg2.setDragItemHoverClass('cursor_move');
  dlg2.setDraggerElClass('cursor_move opacity_40');
  dlg2.setCurrDragItemClass('opacity_40');
  dlg2.setIsCurrDragItemAlwaysDisplayed();
  dlg2.addDragList(goog.dom.getElement('horiz5_div'),
      goog.fx.DragListDirection.RIGHT_2D);
  dlg2.setHysteresis(5);
  dlg2.init();

  var dlg3 = new goog.fx.DragListGroup();
  dlg3.setDragItemHoverClass('cursor_move');
  dlg3.setDraggerElClass('cursor_move opacity_40');
  dlg3.addDragList(goog.dom.getElement('horiz6_div'),
      goog.fx.DragListDirection.RIGHT);
  goog.events.listen(dlg3, goog.fx.DragListGroup.EventType.BEFOREDRAGSTART,
      function(e) {
        if (!e.event.shiftKey) {
          e.preventDefault();
        }
      });
  dlg3.init();

  var dlg4 = new goog.fx.DragListGroup();
  dlg4.setDragItemHoverClass('cursor_move');
  dlg4.setDraggerElClass('cursor_move opacity_40');
  dlg4.setIsCurrDragItemAlwaysDisplayed();
  dlg4.addDragList(goog.dom.getElement('horiz7_div'),
      goog.fx.DragListDirection.RIGHT);
  dlg4.init();
  </script>
</body>
</html>
